// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;

// import java.util.Collections;
// import java.util.List;
#pragma once
#include "../OracleSQLObjectImpl.h"
#include "../../../../ast/SQLExpr.h"
#include "../../../../ast/SQLReplaceable.h"

class OracleArgumentExpr
    : virtual public OracleSQLObjectImpl,
      virtual public SQLExpr,
      virtual public SQLReplaceable
{
public:
  string_ptr argumentName;
  SQLExpr_ptr value;

  OracleArgumentExpr();

  OracleArgumentExpr(string_ptr argumentName, SQLExpr_ptr value);
  SHAREDOBJECT(OracleArgumentExpr);

  string_ptr getArgumentName();

  void setArgumentName(string_ptr argumentName);

  SQLExpr_ptr getValue();

  void setValue(SQLExpr_ptr value);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  // @Override
  SQLObject_ptr clone();

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  // @Override
  SQLObject_list_ptr getChildren();
};
